package main

import (
	"bufio"
	"fmt"
	"golang/src/alg"
	"os"
	"strings"
	"strconv"
)

func Info() {
	fmt.Println("alg-insight command")
}

func AlgListPrint() {
	for i, v := range alg.ListAlgInfo() {
		fmt.Printf("[%v] - %s\n", i, v.GetName())
	}
}

func main() {
	Info()
	// 调用 two-sum 算法
	algList := alg.ListAlgInfo()

	// 创建读取器
	reader := bufio.NewReader(os.Stdin)

	for {
		// 显示菜单选项
		fmt.Println("1. 打印所有算法信息")
		fmt.Println("2. 选择算法")
		
		// 读取用户输入
		input, _ := reader.ReadString('\n')
		input = strings.TrimSpace(input)
		chs, err := strconv.Atoi(input)
		if err != nil {
			fmt.Println("请输入有效的数字")
			continue
		}

		switch chs {
		case 1:
			AlgListPrint()
		case 2:
			fmt.Print("[-1 退出] 输入算法序号:")
			input, _ := reader.ReadString('\n')
			input = strings.TrimSpace(input)
			chs, err = strconv.Atoi(input)
			if err != nil {
				fmt.Println("请输入有效的数字")
				continue
			}

			if chs == -1 {
				return
			}

			if chs < 0 || chs >= len(algList) {
				fmt.Println("无效的算法序号")
				continue
			}

			value := algList[chs]

			fmt.Printf("算法: %s, 链接: %s\n", value.GetName(), value.GetURL())
			value.Execute()
		}

	}
}
